add_header_library(
  signal_utils
  HDRS
    signal_utils.h
  DEPENDS
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
)

add_entrypoint_object(
  kill
  SRCS
    kill.cpp
  HDRS
    ../kill.h
  DEPENDS
    libc.include.signal
    libc.src.errno.errno
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
)

add_entrypoint_object(
  raise
  SRCS
    raise.cpp
  HDRS
    ../raise.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
)

add_object_library(
  __restore
  SRCS
    __restore.cpp
  COMPILE_OPTIONS
    -fomit-frame-pointer
    -O3
    -Wframe-larger-than=0
    -Werror
    -Wno-attributes
    # asan creates asan.module_ctor which uses stack space, causing warnings.
    -fno-sanitize=address
  DEPENDS
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
)

add_entrypoint_object(
  sigaction
  SRCS
    sigaction.cpp
  HDRS
    ../sigaction.h
  DEPENDS
    .__restore
    libc.include.signal
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
    libc.src.errno.errno
)

add_entrypoint_object(
  sigaltstack
  SRCS
    sigaltstack.cpp
  HDRS
    ../sigaltstack.h
  DEPENDS
    libc.include.signal
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
    libc.src.errno.errno
)

add_entrypoint_object(
  sigprocmask
  SRCS
    sigprocmask.cpp
  HDRS
    ../sigprocmask.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.include.sys_syscall
    libc.src.__support.OSUtil.osutil
    libc.src.errno.errno
)

add_entrypoint_object(
  sigemptyset
  SRCS
    sigemptyset.cpp
  HDRS
    ../sigemptyset.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.src.errno.errno
)

add_entrypoint_object(
  sigaddset
  SRCS
    sigaddset.cpp
  HDRS
    ../sigaddset.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.src.errno.errno
)

add_entrypoint_object(
  signal
  SRCS
    signal.cpp
  HDRS
    ../signal.h
  DEPENDS
    .sigaction
    libc.include.signal
)

add_entrypoint_object(
  sigfillset
  SRCS
    sigfillset.cpp
  HDRS
    ../sigfillset.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.src.errno.errno
)

add_entrypoint_object(
  sigdelset
  SRCS
    sigdelset.cpp
  HDRS
    ../sigdelset.h
  DEPENDS
    .signal_utils
    libc.include.signal
    libc.src.errno.errno
)
